﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

    public class RepositorioOcorrencia 
    {
        private BD bd = new BD();

        public String formataID(String formato, String id)
        {
            int tamanhoId = id.Length;
            String formatoRetorno = formato.Substring(tamanhoId);
            formatoRetorno += id;

            return formatoRetorno;
        }
        public String retornaOcorrenciasTerceiros(int terc_codigo)
        {
            String sql = "Select " +
                            "tb_ocorrencia.ocorrencia_cod,tb_ocorrencia.ocorrencia_av_rua," +
                            "tb_ocorrencia.ocorrencia_bairro,tb_ocorrencia.ocorrencia_ponto_ref," +
                            "tb_pedido.pedido_cod " +
                        " From " +
                            "tb_ocorrencia " +
                                "inner join tb_pedido on(tb_ocorrencia.ocorrencia_cod = tb_pedido.ocorrencia_cod) " +
                        "WHERE " +
                            "tb_pedido.pedido_situacao = 'A'";/* and "+
                            "tb_pedido.pedido_cod not in(Select pedido_cod from tb_proposta where terc_cod = '" + terc_codigo + "' and pedido_cod = tb_pedido.pedido_cod)";*/
            String tableOcorrencia = "";
            using (SqlConnection conexao = new SqlConnection(bd.strConnection))
            {
                conexao.Open();
                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    tableOcorrencia += "<tr>" +
                              "<td><center>" + formataID("0000",dr["ocorrencia_cod"]+"") + "</center></td>" +
                              "<td><center>" + dr["ocorrencia_av_rua"] + "</center></td>" +
                              "<td><center>" + dr["ocorrencia_bairro"] + "</center></td>" +
                              "<td><center>" + dr["ocorrencia_ponto_ref"] + "</center></td>" +
                              "<td><a href='visualizar_detalhes.aspx?id=" + formataID("0000", dr["ocorrencia_cod"] + "") + "&height=500&width=650' class='thickbox'><img src='img/icone_pesquisar.gif' width='15px' heigth='3px' border='0' /></a></td>" +
                              "<td><a href='enviarProposta.aspx?id=" + formataID("0000", dr["ocorrencia_cod"] + "") + "&pedido=" + formataID("0000", dr["pedido_cod"] + "") + "&height=250&width=600' class='thickbox'> <img src='img/pedido.jpg' width='20px' heigth='20px' border='0' alt='Fazer Proposta' /></a></td>" +
                          "</tr>";

                }
            }
            return tableOcorrencia;

        }

        public String retornaOcorrenciasAbertas(String usu_login)
        {
            String sql = "Select "+ 
                               "tb_ocorrencia.ocorrencia_cod,tb_ocorrencia.ocorrencia_av_rua, "+
                               "tb_ocorrencia.ocorrencia_bairro,tb_ocorrencia.ocorrencia_ponto_ref "+
                            "From  "+
                                "tb_ocorrencia  "+
                                  "inner join tb_usuario_ocorrencia on(tb_ocorrencia.ocorrencia_cod = tb_usuario_ocorrencia.ocorrencia_cod)  "+
                            "WHERE  "+
                                "tb_ocorrencia.ocorrencia_situacao = 'F' and  "+
                                "tb_usuario_ocorrencia.usu_login = '" + usu_login + "'";
            String tableOcorrencia = "";
            using (SqlConnection conexao = new SqlConnection(bd.strConnection))
            {
                conexao.Open();
                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    tableOcorrencia += "<tr>" +
                              "<td><center>" + formataID("0000", dr["ocorrencia_cod"] + "") + "</center></td>" +
                              "<td><center>" + dr["ocorrencia_av_rua"] + "</center></td>" +
                              "<td><center>" + dr["ocorrencia_bairro"] + "</center></td>" +
                              "<td><center>" + dr["ocorrencia_ponto_ref"] + "</center></td>" +
                              "<td><a href='visualizar_ocorrencia.aspx?id=" + formataID("0000", dr["ocorrencia_cod"] + "") + "&height=500&width=650' class='thickbox'><img src='img/icone_pesquisar.gif' width='15px' heigth='3px' border='0' /></a></td>" +
                              "<td><a href='confirmarOcorrencia.aspx?id=" + formataID("0000", dr["ocorrencia_cod"] + "") + "' > <img src='img/pedido.jpg' width='20px' heigth='20px' border='0' alt='Fazer Proposta' /></a></td>" +
                          "</tr>";

                }
            }
            return tableOcorrencia;

        }


        public String retornaTableOcorrenciaPorId(int codigo)
        {
            String sql = "Select * from tb_ocorrencia where ocorrencia_cod = '"+codigo+"'";
            String tableOcorrencia = "";
            using (SqlConnection conexao = new SqlConnection(bd.strConnection))
            {
                conexao.Open();
                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    tableOcorrencia = "<table border='0' style='border: 1px solid #eee;width:600px' cellpadding='4' cellspacing='0'>" +
                                       "<tr><td colspan='9'>&nbsp;</td></tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>CÓDIGO</b></td><td colspan='9' style='border-bottom:1px solid #eee;'><b>" + formataID("0000", dr["ocorrencia_cod"] + "") + "</b></td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>LAGADOURO</b></td><td colspan='9' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_av_rua"] + "</td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>CEP:</b></td><td colspan='3' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_cep"] + "</td><td style='border-bottom:1px solid #eee;'><b>BAIRRO:</b></td><td colspan='3' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_bairro"] + "</td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>PTO.REFERENCIA</b></td><td colspan='9' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_ponto_ref"] + "</td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td colspan='9' align='center' style='border-bottom:1px solid #eee;'><b>IMAGEM</b></td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td colspan='9' align='center' style='border-bottom:1px solid #eee;'><img src='fotos/pothole1.jpg' width='100%' height='80%' /></td>" +
                                        "</tr>" +
                                       "</table>";

                }
            }
            return tableOcorrencia;

        }

        public String retornaTableOcorrenciaFiscalPorId(int codigo)
        {
            String sql = "Select * from tb_ocorrencia where ocorrencia_cod = '" + codigo + "'";
            String tableOcorrencia = "";
            using (SqlConnection conexao = new SqlConnection(bd.strConnection))
            {
                conexao.Open();
                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    tableOcorrencia = "<table border='0' style='border: 1px solid #eee;width:600px' cellpadding='4' cellspacing='0'>" +
                                       "<tr><td colspan='9'>&nbsp;</td></tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>CÓDIGO</b></td><td colspan='9' style='border-bottom:1px solid #eee;'><b>" + formataID("0000", dr["ocorrencia_cod"] + "") + "</b></td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>LAGADOURO</b></td><td colspan='9' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_av_rua"] + "</td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>CEP:</b></td><td colspan='3' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_cep"] + "</td><td style='border-bottom:1px solid #eee;'><b>BAIRRO:</b></td><td colspan='3' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_bairro"] + "</td>" +
                                        "</tr>" +
                                        "<tr>" +
                                            "<td align='left' style='border-bottom:1px solid #eee;'><b>PTO.REFERENCIA</b></td><td colspan='9' style='border-bottom:1px solid #eee;'>" + dr["ocorrencia_ponto_ref"] + "</td>" +
                                        "</tr>" +
                                        "<tr>";
                    if (dr["ocorrencia_imagem"] != null)
                    {
                        tableOcorrencia += "<td colspan='9' align='center' style='border-bottom:1px solid #eee;'><b>IMAGEM</b></td>" +
                                "</tr>" +
                                "<tr>" +
                                    "<td colspan='9' align='center' style='border-bottom:1px solid #eee;'><img src='" + dr["ocorrencia_imagem"] + "' width='100%' height='80%' /></td>" +
                                "</tr>";
                    }

                    tableOcorrencia += "</table>";

                }
            }
            return tableOcorrencia;

        }

        
        public int retornaIdPedidoPelaOcorrencia(int codigo)
        {
            String sql = "Select pedido_cod from tb_pedido where ocorrencia_cod = '" + codigo + "'";
            int pedido_cod  = 0;
            using (SqlConnection conexao = new SqlConnection(bd.strConnection))
            {
                conexao.Open();
                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    pedido_cod = int.Parse(dr["pedido_cod"].ToString());
                }
            }
            return pedido_cod;

        }

        public Boolean inserirOcorrencia(Ocorrencia oco)
        {

            StringBuilder sql = new StringBuilder();
            sql.Append("INSERT INTO tb_ocorrencia (categoria_cod, ocorrencia_av_rua, ocorrencia_bairro, ocorrencia_ponto_ref, ocorrencia_cep, denunciante_nome, denunciante_email, denunciante_celular, ocorrencia_envio, ocorrencia_imagem, ocorrencia_data_cadastro, ocorrencia_data_conclusao, ocorrencia_situacao) ");
            sql.Append("VALUES (" + oco.Categoria_cod + ", '" + oco.Ocorrencia_av_rua + "', '" + oco.Ocorrencia_bairro + "', '" + oco.Ocorrencia_ponto_ref + "', '" + oco.Ocorrencia_cep + "', '" + oco.Denunciante_nome + "', '" + oco.Denunciante_email + "', '" + oco.Denunciante_celular + "', '" + oco.Ocorrencia_envio + "', '" + oco.Ocorrencia_imagem + "', '" + oco.Ocorrencia_data_cadastro.ToString("MM/dd/yyyy") + "', '" + oco.Ocorrencia_data_conclusao.ToString("MM/dd/yyyy") + "', '" + oco.Ocorrencia_situacao + "')");
            bd.rodarComando(sql.ToString());

            return true;
        }


        public Ocorrencia retornaOcorrencia(int codigo,String usu_login)
        {
            //String sql = "Select * from tb_ocorrencia where ocorrencia_cod = '" + codigo + "'";
            String sql = "Select * " +
                             "From  " +
                                 "tb_ocorrencia  " +
                                   "inner join tb_usuario_ocorrencia on(tb_ocorrencia.ocorrencia_cod = tb_usuario_ocorrencia.ocorrencia_cod)  " +
                             "WHERE  " +
                                 "tb_ocorrencia.ocorrencia_situacao = 'F' and  " +
                                 "tb_usuario_ocorrencia.usu_login = '" + usu_login + "' and "+
                                 "tb_ocorrencia.ocorrencia_cod = '"+codigo+"'";

            Ocorrencia ocorrencia = new Ocorrencia();
            int contador = 0;
            using (SqlConnection conexao = new SqlConnection(bd.strConnection))
            {
                conexao.Open();
                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    ocorrencia.Categoria_cod = int.Parse(dr["categoria_cod"].ToString());
                    ocorrencia.Ocorrencia_av_rua = dr["ocorrencia_av_rua"].ToString();
                    ocorrencia.Ocorrencia_bairro = dr["ocorrencia_bairro"].ToString();
                    ocorrencia.Ocorrencia_ponto_ref = dr["ocorrencia_ponto_ref"].ToString();
                    ocorrencia.Ocorrencia_cep = dr["ocorrencia_cep"].ToString();
                    ocorrencia.Ocorrencia_imagem = dr["ocorrencia_imagem"].ToString();
                    ocorrencia.Denunciante_nome = dr["denunciante_nome"].ToString();
                    ocorrencia.Denunciante_email = dr["denunciante_email"].ToString();
                    ocorrencia.Denunciante_celular = dr["denunciante_celular"].ToString();
                    ocorrencia.Ocorrencia_envio = dr["ocorrencia_envio"].ToString();
                    contador++;
                }
            }
            if (contador > 0)
            {
                return ocorrencia;
            }
            else
            {
                return null;
            }

        }


        public Boolean confirmaOcorrencia(int codigo)
        {
            String sql = "UPDATE tb_ocorrencia set ocorrencia_situacao = 'V' where ocorrencia_cod='" + codigo + "'";
            bd.rodarComando(sql.ToString());

            return true;
        }

        public Boolean confirmaOcorrenciacomImagem(int codigo,String img)
        {
            String sql = "UPDATE tb_ocorrencia set ocorrencia_situacao = 'V',ocorrencia_imagem='" + img + "' where ocorrencia_cod='" + codigo + "'";
            bd.rodarComando(sql.ToString());

            return true;
        }

        public Boolean cancelaOcorrencia(int codigo)
        {
            String sql = "UPDATE tb_ocorrencia set ocorrencia_situacao = 'C' where ocorrencia_cod='" + codigo + "'";
            bd.rodarComando(sql.ToString());

            return true;
        }

        public int retornaMaxId()
        {
            String sql = "Select MAX(ocorrencia_cod)as ocorrencia_cod from tb_ocorrencia ";
            int ocorrencia_cod = 0;
            using (SqlConnection conexao = new SqlConnection(bd.strConnection))
            {
                conexao.Open();
                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    ocorrencia_cod = int.Parse(dr["ocorrencia_cod"].ToString());
                }
            }
            return ocorrencia_cod + 1;

        }


    }//fim classe

